#ifndef DIALOGSERVEUR_H
#define DIALOGSERVEUR_H

#include <QWidget>
#include <QtGui>
#include <QtNetwork>

#include "actionnet.h"
#include "plateaurisq.h"


class Joueur;
class Continent;
class Etat;

/**
 * @author LOPEZ CARON
 * @brief Partie concernant le réseau, s'occupe de la partie serveur
 */
class DialogServeur : public QWidget
{
public:
    Q_OBJECT

    public:
        DialogServeur(QString boardname, int nbMaxJoueur, int port);

    private slots:
        void nouvelleConnexion();
        void fermeServeur();
        void donneesRecues();
        void deconnexionClient();
        void dispatch(QTcpSocket *socket, ActionNet action, QString donnee);
        void envoyerDonnees(QTcpSocket *socket, ActionNet action, QString donnee);
        void envoyerATous(ActionNet action, QString donnee);
        void envoyerATousSauf(QTcpSocket *socket, ActionNet action, QString donnee);

    protected:
        void actConnect(QTcpSocket *socket, QString donnee);
        void actJoueurList(QTcpSocket *socket);
        void actPays();
    private:
        QLabel *etatServeur;
        QPushButton *boutonQuitter;

        QTcpServer *serveur;
        QList<QTcpSocket *> clients;

        quint16 tailleMessage;
        PlateauRisQ *plateau;
        int nbMaxJoueur;

};

#endif // DIALOGSERVEUR_H
